					SQL_Engine v1.0

Background and Design Philosophy:

There were two goals for this project... to create a useful tool for doing select statements
against a detached dataset and to publish the source code as an example of advanced ADO.Net
programming.

Unfortunately, the two goals sometimes were in conflict with each other.   There are several
locations in the source code where some significant improvements in performance can be
obtained.  However, those optimizations would make the source code way too complex and
difficult to follow.  Consequently, I tended to take the side of source code reability
over performance.

I left enough bread crumbs behind so that others can pick up where I left off to make
optimizations if they feel they need to.

There are also quiet a few TODO markers in the code where other features could be added
(either by me or anybody else).

How to use SQL_Engine in your project:

The source code contains a solution with two projects one project in a subdirectory called
SQL_Engine creates the SQL_Engine DLL file.  The other project in the root is just a test
bed to demonstrate the features of the DLL.    You can compile the DLL and then copy it to
your project, or you can copy the entire SQL_Engine subdirectory into your project.

Typically compiled DLL files would be digitally signed and placed in the Global Assembly
Cache (GAC) or distributed in the execution directory with your project.

Current Limitations:

Although I attempted to follow the Microsoft SQL Server 2000 dialect of the SQL language,
there were quite a few features that did not make the cut.  The most severe limitation is
the lack of support for the hundreds of SQL Server functions.  Many could not be easily
translated using native ADO.Net features, and adding them is outside the scope of this
project.

The entire database, including temporary tables, must exist in RAM on the client PC.  That
means that you will see significant performance degredation using large databases. 
Likewise, a query with multiple joins could take several seconds to complete.

Lastly, this is a demonstration project... not production code.  It has not been throughly
tested in a production environment.  I'd highly recommend you perform your own side-by-side
testing of the output of this DLL and a "live" database.

Error Messages:

There are 3 major categories of error messages.   "SQL syntax error" is where the parser has
detected input that is not legal in the SQL Language.   "SQL implementation limit" is where
input would normally be legal in a real database, but it's not supported here.  "SQL parameter
error" and "Input error" are where you've provided bogus input (like a table name that doesn't
exist).

Documentation:

There is none.  Actually the source code is highly commented and serves as the project's
documentation.  I hope I've done a sufficient job of commenting the code to allow others to
figure out what's going on.